//package mpxj;
//
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.List;
//
//import net.sf.mpxj.DateRange;
//import net.sf.mpxj.Day;
//import net.sf.mpxj.Duration;
//import net.sf.mpxj.ProjectCalendar;
//import net.sf.mpxj.ProjectCalendarException;
//import net.sf.mpxj.ProjectCalendarHours;
//import net.sf.mpxj.ProjectFile;
//import net.sf.mpxj.ProjectHeader;
//import net.sf.mpxj.RelationType;
//import net.sf.mpxj.Resource;
//import net.sf.mpxj.ResourceAssignment;
//import net.sf.mpxj.Task;
//import net.sf.mpxj.TimeUnit;
//import net.sf.mpxj.TimephasedResourceAssignment;
//import net.sf.mpxj.TimephasedResourceAssignmentNormaliser;
//import net.sf.mpxj.mpp.MPPTimephasedResourceAssignmentNormaliser;
//import net.sf.mpxj.mspdi.MSPDIWriter;
//import net.sf.mpxj.writer.ProjectWriter;
//
//public class CreateMPPByXml {
//	public CreateMPPByXml() {
//	}
//
//	public static void main(String args[]) {
//		try {
//			create("c:\\output.xml");
//		} catch (Exception ex) {
//			ex.printStackTrace(System.out);
//		}
//	}
//
//	private static void create(String filename) throws Exception {
//		ProjectFile file = new ProjectFile();
//
//		file.setAutoResourceID(true);
//		file.setAutoResourceUniqueID(true);
//		//1.设置资源
//		Resource r1 = file.addResource();
//		r1.setName("one");
//		r1.setPercentWorkComplete(ResourceAssignment.DEFAULT_UNITS);
//		
//		Resource r2 = file.addResource();
//		r2.setName("two");
//		r2.setPercentWorkComplete(ResourceAssignment.DEFAULT_UNITS);
//
//		//2.阶段 
//		Task task1 = file.addTask();
//		task1.setName("task1");//阶段名称
//		task1.setUniqueID(1);//唯一编号
//		task1.setID(1);//编号(唯一编号和编号可能不同)
//		task1.setOutlineLevel(new Integer(1));//阶段级别。(1代表最大的一个阶段，以此类推)
//		task1.setDuration(Duration.getInstance(14, TimeUnit.DAYS));//工期。（已天为单位）
//		
//		Task task11 = file.addTask();
//		task11.setName("task1-1");
//		task11.setDuration(Duration.getInstance(3, TimeUnit.DAYS));
//		task11.setStart(changeType("2009-7-1 8:00:00"));
//		task11.setFinish(changeType("2009-7-3 17:00:00"));
//		task11.setUniqueID(2);
//		task11.setID(2);
//		task11.setOutlineLevel(new Integer(2));
//
//		Task task12 = file.addTask();
//		task12.setName("task1-2");
//		task12.setDuration(Duration.getInstance(7, TimeUnit.DAYS));
//		task12.setStart(changeType("2009-7-7 8:00:00"));
//		task12.setFinish(changeType("2009-7-20 17:00:00"));
//		task12.setUniqueID(3);
//		task12.setID(3);
//		task12.setOutlineLevel(new Integer(2));
//
//		
//		//3.资源分配   建立Task与Resource的关系
//		ResourceAssignment a1 = task11.addResourceAssignment(r1);
//		a1.setRemainingWork(Duration.getInstance(3 * 8, TimeUnit.HOURS));//工期，已小时为单位例如阶段工期为5，则work=5*8 
//		a1.setWork(Duration.getInstance(3 * 8, TimeUnit.HOURS));//同上
//		a1.setStart(changeType("2009-7-1 8:00:00"));//阶段开始时间 
//		a1.setFinish(changeType("2009-7-3 17:00:00"));//阶段结束时间 
//		a1.setUnits(ResourceAssignment.DEFAULT_UNITS);
//		
//		ResourceAssignment a2 = task12.addResourceAssignment(r2);
//		a2.setRemainingWork(Duration.getInstance(7 * 8, TimeUnit.HOURS));
//		a2.setWork(Duration.getInstance(7 * 8, TimeUnit.HOURS));
//		a2.setStart(changeType("2009-7-7 8:00:00"));
//		a2.setFinish(changeType("2009-7-20 17:00:00"));
//		a2.setUnits(ResourceAssignment.DEFAULT_UNITS);
//		
//		//4.拆分时间段 
//		List<TimephasedResourceAssignment> timephasedPlannedt = new ArrayList<TimephasedResourceAssignment>();
//
//		TimephasedResourceAssignment tpras1 = new TimephasedResourceAssignment();
//		tpras1.setStart(changeType("2009-7-6 8:00:00"));//时间段开始时间
//		tpras1.setModified(false);
//		tpras1.setFinish(changeType("2009-7-8 17:00:00"));//时间段结束时间 
//		tpras1.setTotalWork(Duration.getInstance(1440, TimeUnit.HOURS));//总工作时间
//		tpras1.setWorkPerDay(Duration.getInstance(480, TimeUnit.HOURS));//每天的工作时间，已分钟为单位，一般为480 
//		timephasedPlannedt.add(tpras1);
//
//		TimephasedResourceAssignment tpras2 = new TimephasedResourceAssignment();
//		tpras2.setStart(changeType("2009-7-9 8:00:00"));
//		tpras2.setModified(false);
//		tpras2.setFinish(changeType("2009-7-14 17:00:00"));
//		tpras2.setTotalWork(Duration.getInstance(0, TimeUnit.HOURS));
//		tpras2.setWorkPerDay(Duration.getInstance(0, TimeUnit.HOURS));
//		timephasedPlannedt.add(tpras2);
//
//		TimephasedResourceAssignment tpras3 = new TimephasedResourceAssignment();
//		tpras3.setStart(changeType("2009-7-15 8:00:00"));
//		tpras3.setModified(false);
//		tpras3.setFinish(changeType("2009-7-20 17:00:00"));
//		tpras3.setTotalWork(Duration.getInstance(1920, TimeUnit.HOURS));
//		tpras3.setWorkPerDay(Duration.getInstance(480, TimeUnit.HOURS));
//		timephasedPlannedt.add(tpras3);
//
//		TimephasedResourceAssignmentNormaliser normaliser = new MPPTimephasedResourceAssignmentNormaliser();
//		a2.setTimephasedNormaliser(normaliser);
//		a2.setTimephasedPlanned(timephasedPlannedt, true);
//		a2.setTimephasedComplete(new ArrayList(), false);
//
//		//5.前置关系(FF/FS/SF/SS:完成完成/完成开始/开始完成/开始开始)
//		task12.addPredecessor(task11, RelationType.FINISH_START, null);
//
//		//6.工作日历 
//		ProjectCalendar pc = file.addBaseCalendar();
//		pc.setUniqueID(new Integer(1));
//		// 设置工作日历 这里设的周1－7全部工作，如不设默认为5天工作制
//		pc.setName("标准");
//		pc.setWorkingDay(Day.SUNDAY, false);//设置星期几是否工作 
//		pc.setWorkingDay(Day.MONDAY, true);
//		pc.setWorkingDay(Day.TUESDAY, true);
//		pc.setWorkingDay(Day.WEDNESDAY, true);
//		pc.setWorkingDay(Day.THURSDAY, true);
//		pc.setWorkingDay(Day.FRIDAY, true);
//		pc.setWorkingDay(Day.SATURDAY, false);
//
//		ProjectCalendarHours h1 = pc.addCalendarHours(Day.SUNDAY);//设置星期几工作时间段
//		h1.addRange(new DateRange(ProjectCalendar.DEFAULT_START1,
//				ProjectCalendar.DEFAULT_END1));
//		h1.addRange(new DateRange(ProjectCalendar.DEFAULT_START2,
//				ProjectCalendar.DEFAULT_END2));
//
//		ProjectCalendarHours h2 = pc.addCalendarHours(Day.MONDAY);
//		h2.addRange(new DateRange(ProjectCalendar.DEFAULT_START1,
//				ProjectCalendar.DEFAULT_END1));
//		h2.addRange(new DateRange(ProjectCalendar.DEFAULT_START2,
//				ProjectCalendar.DEFAULT_END2));
//
//		ProjectCalendarHours h3 = pc.addCalendarHours(Day.TUESDAY);
//		h3.addRange(new DateRange(ProjectCalendar.DEFAULT_START1,
//				ProjectCalendar.DEFAULT_END1));
//		h3.addRange(new DateRange(ProjectCalendar.DEFAULT_START2,
//				ProjectCalendar.DEFAULT_END2));
//
//		ProjectCalendarHours h4 = pc.addCalendarHours(Day.WEDNESDAY);
//		h4.addRange(new DateRange(ProjectCalendar.DEFAULT_START1,
//				ProjectCalendar.DEFAULT_END1));
//		h4.addRange(new DateRange(ProjectCalendar.DEFAULT_START2,
//				ProjectCalendar.DEFAULT_END2));
//
//		ProjectCalendarHours h5 = pc.addCalendarHours(Day.THURSDAY);
//		h5.addRange(new DateRange(ProjectCalendar.DEFAULT_START1,
//				ProjectCalendar.DEFAULT_END1));
//		h5.addRange(new DateRange(ProjectCalendar.DEFAULT_START2,
//				ProjectCalendar.DEFAULT_END2));
//
//		ProjectCalendarHours h6 = pc.addCalendarHours(Day.FRIDAY);
//		h6.addRange(new DateRange(ProjectCalendar.DEFAULT_START1,
//				ProjectCalendar.DEFAULT_END1));
//		h6.addRange(new DateRange(ProjectCalendar.DEFAULT_START2,
//				ProjectCalendar.DEFAULT_END2));
//
//		ProjectCalendarHours h7 = pc.addCalendarHours(Day.SATURDAY);
//		h7.addRange(new DateRange(ProjectCalendar.DEFAULT_START1,
//				ProjectCalendar.DEFAULT_END1));
//		h7.addRange(new DateRange(ProjectCalendar.DEFAULT_START2,
//				ProjectCalendar.DEFAULT_END2));
//		
//		
//		//7.设置特殊工作日。
//		ProjectCalendarException pce = pc.addCalendarException(changeType("2008-8-28 8:00:00"), changeType("2008-8-29 17:00:00"));
//		DateRange dr = new DateRange(changeType("2008-8-21 8:00:00"),changeType("2008-8-21 12:00:00"));// DateRange 为工作时段。
//		pce.addRange(dr);// 可以添加多个工作时段。
//
//		// 设置项目默认使用的日历为新建的日历。
//		ProjectHeader ph = file.getProjectHeader();
//		ph.setCalendarName(pc.getName());
//
//		ProjectWriter writer = new MSPDIWriter();
//		writer.write(file, filename);
//	}
//
//	private static java.util.Date changeType(String date) {
//		java.util.Date uDate = null;
//		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		try {
//			if (date != null && !"".equals(date)) {
//				uDate = df.parse(date);
//			}
//		} catch (ParseException e) {
//			e.printStackTrace();
//		}
//
//		return uDate;
//	}
//}